package com.ctshk.rpc.order.goods.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.order.goods.dto.*;
import com.ctshk.rpc.order.goods.dto.resp.CommodityInfo;
import com.ctshk.rpc.order.goods.dto.resp.CommodityInfoResp;
import com.ctshk.rpc.order.goods.dto.resp.CommodityPageReq;
import com.ctshk.rpc.order.goods.req.RegionalFreightReq;

import java.util.List;

/**
 * TODO
 * 商品首页 服务类
 * @author huangxiansheng
 * @date 2021/5/19 1:06 下午
 */
public interface ICommodityHomeService {

    /**
     * 获取商城专题列表
     * @return
     */
    public Result<List<ShoppingSpecialPageDTO>> getShoppingSpecial();

    /**
     * 获取商城级联分类
     * @return
     */
    public Result<List<CommodityClassificationAllLevelListDTO>> getClassification();

    /**
     * 更新商城首页缓存
     * @return
     */
    public Result updateGoodsCache(CommodityPageReq pageReq, TokenUser tokenUser);


    /**
     * 商城首页二级分类商品展示
     * @return
     */
    public Result<PageResponse<CommodityInfoResp>> getTwoLevel(String towLevelId,Integer statusCode,Integer page,Integer size);

    /**
     * 商品详情展示
     * @param id
     * @return
     */
    public Result<CommodityInfo> info(String id,Long userId);

    /**
     * 关键字推荐
     * @param keyword
     * @return
     */
    Result<List<String>> recommend(String keyword);

    /**
     * 关键字搜索
     * @param keyword
     * @param page
     * @param size
     * @return
     */
    Result<PageResponse<CommodityInfoResp>> keywordSearch(String keyword,Integer statusCode,Integer page,Integer size);

    /**
     * 首页商品推荐查询
     * @param type
     * @return
     */
    Result<List<CommodityInfoResp>> commodityRecommend(Integer type);

    /**
     * 商品热门词汇展示
     * @return
     */
    Result<List<String>> hotWrods();

    /**
     * 商城C端二级菜单展示
     * @return
     */
    Result<List<CommodityClassificationLevelTwoDTO>> twoLevelAndApp();


    /**
     * 商城首页列表聚合
     * @param type
     * @param size
     * @return
     */
    Result<CommodityInfoRespDTO> indexList(Integer type,String code,Integer size);

    /**
     * 获取全部商品
     * @return
     * @param page
     * @param size
     */
    Result<PageResponse<CommodityInfoResp>> getCommodityAll(Integer page,Integer size,Integer statusCode);


    /**
     * 查询用户地区运费模板
     * @return
     * @param req
     */
    Result<RegionalFreightDTO> region(RegionalFreightReq req);

}
